package br.com.cast.dao;

import java.util.Iterator;

import javax.persistence.Query;

import org.springframework.stereotype.Component;

import br.com.cast.exception.ProdutoCadastrado;
import br.com.cast.modelo.Produto;
@Component
public class ProdutoDAO  extends BaseDAO<Produto>{
	@SuppressWarnings("unchecked")
	public Iterator<Produto> consultaPaginada(long inicio, long total){
		
		Query query = getEntityManager()
				.createQuery("from Produto");
			
		
		query.setFirstResult((int) inicio);
		query.setMaxResults((int)total);
		
		return query.getResultList().iterator();
		
	}
	
	public boolean produtoCadastrado(Produto produto) throws ProdutoCadastrado{
		
		
		StringBuilder hql = new StringBuilder();
		hql.append("select count(*) as qtd ")
			.append("from Produto ")
			.append("where descricao = :descricao");
		if (produto.getId() != null) { 
			//alteração
			hql.append(" and id <> :id ");
		}
			Query query = getEntityManager()
					.createQuery(hql.toString());
			query.setParameter("descricao",produto.getDescricao() );
			
		if (produto.getId() != null) {
				//alteração
				query.setParameter("id", produto.getId());
			}
		return (long)query.getSingleResult() > 0;
	}
	

}
